package br.com.monitor.modelos;

/**
 * @author Projeto Monitor - Smart Fit 
 * Classe para o calculo de informacoes fisicas.
 * 
 */
public class CalculaIndices {
	/**
	 * 
	 * @return Retorna o calculo da porcentagem de gordura com a utilizacao do adipometro.
	 */

	public static Double porcentagemGorduraComAdipometro(Usuario usuario){
		Double soma = (usuario.getInformacoesFisicas().getMedidaPeito()*10)+(usuario.getInformacoesFisicas().getMedidaPerna()*10) + (usuario.getInformacoesFisicas().getMedidaAbdomen()*10);
		Double densidade = 1.1093800 - (0.0008267*soma) + (0.0000016 * (soma*soma)) - (0.0002574 * (double)usuario.getIdade());
		return  (double) Math.round(((4.95/densidade)-4.5)*100) + 2;
	}
	
	/**
	 * 
	 * @return Retorna o calculo do "peso gordo" em Kg.
	 */
	
	public static Double calculaPesoGordo(Usuario usuario){
		return (double) Math.round(usuario.getInformacoesFisicas().getPeso()*(porcentagemGorduraComAdipometro(usuario)/100));
	}
	
	/**
	 * 
	 * @return Retorna o calculo do "peso magro" em Kg.
	 */
	
	public static Double calculaPesoMagro(Usuario usuario){
		return (double) Math.round(usuario.getInformacoesFisicas().getPeso() - calculaPesoGordo(usuario));
	}
	
	/**
	 * 
	 * @return Retorna o calculo do Indice de Massa Corporea.
	 */
	public static Double calculaIMC(Usuario usuario){
		return (double) Math.round(usuario.getInformacoesFisicas().getPeso()/((usuario.getInformacoesFisicas().getAltura()/100)*(usuario.getInformacoesFisicas().getAltura()/100)));
	}

}
